Key-value stores are powerful tools for storing and retrieving large amounts of data for activities such as data analysis. Generally, key-value stores can store pairs of keys and values, and can retrieve values when a key is known. Thus, in a key-value store, a key is a unique identifier for the object comprising the key-value pair. The keys often convey semantic meaning.
LevelDB is an example of an open source key-value store from Google, Inc. See, for example, Jeff Dean and Sanjay Ghemawat, “LevelDB: A Fast Persistent Key-Value Store,” Google Open Source Blog, (Jul. 27, 2011). LevelDB stores keys and values in arbitrary byte arrays. For example, when LevelDB persists key-value information to storage, a Portable Operating System Interface (POSIX) is typically employed. The POSIX interface will store the key-value pairs by converting the key-value pairs to strings of bytes, and writing the converted key-value pairs as an array of bytes to storage. Therefore, the semantic information associated with the key-value data is lost.
A need therefore exists for improved techniques for storing key-value data to storage that maintain the semantic information associated with the stored key-value data. A further need exists for techniques for storing key-value data using a hardware accelerated key-value store for storage of key-value data on storage systems.